'use strict'
const path = require('path')
const config = require('./src/config.js')

function resolve(dir) {
  return path.join(__dirname, dir)
}

const name = config.title || 'vue2-template-composition-api' // page title

const port = 9528 // dev port

// All configuration item explanations can be find in https://cli.vuejs.org/config/
module.exports = {
  publicPath: '/',
  outputDir: 'dist',
  assetsDir: 'static',
  lintOnSave: false,
  productionSourceMap: false,
  devServer: {
    port: port,
    open: true,
    overlay: {
      warnings: false,
      errors: true
    },
  },
  // css: {
  //   loaderOptions: {
  //     // 默认情况下 `sass` 选项会同时对 `sass` 和 `scss` 语法同时生效
  //     // 因为 `scss` 语法在内部也是由 sass-loader 处理的
  //     // 但是在配置 `prependData` 选项的时候
  //     // `scss` 语法会要求语句结尾必须有分号，`sass` 则要求必须没有分号
  //     // 在这种情况下，我们可以使用 `scss` 选项，对 `scss` 语法进行单独配置
  //     scss: {
  //       prependData: `@import "~@/styles/variables.scss";`
  //     }
  //   },
  // },
  configureWebpack: {
    // provide the app's title in webpack's name field, so that
    // it can be accessed in index.html to inject the correct title.
    name: name,
    resolve: {
      alias: {
        '@': resolve('src')
      }
    },
    externals: {
      'vue': 'Vue',
      'vue-router': 'VueRouter',
      'vuex': 'Vuex',
      'axios': 'axios',
      'element-ui': 'ELEMENT',
      '_': 'lodash',
      // 'echarts': 'echarts'
    }
  },
  chainWebpack(config) {
    const cdn = {
      css: [
        // element-ui css
        'https://lib.baomitu.com/element-ui/2.13.2/theme-chalk/index.css'
      ],
      js: [
        // vue must at first!
        'https://cdn.jsdelivr.net/npm/vue@2.6.12/dist/vue.min.js',
        'https://cdn.jsdelivr.net/npm/vue-router@3.5.1/dist/vue-router.min.js',
        'https://cdn.jsdelivr.net/npm/vuex@3.6.2/dist/vuex.min.js',
        // axios
        'https://cdn.jsdelivr.net/npm/axios@0.21.1/dist/axios.min.js',
        // element-ui js
        'https://lib.baomitu.com/element-ui/2.15.1/index.min.js',
        // lodash
        'https://cdn.jsdelivr.net/npm/lodash@4.17.21/lodash.min.js',
        // echarts
        // "https://cdn.jsdelivr.net/npm/echarts@5.0.2/dist/echarts.min.js",
        // "https://echarts-www.cdn.bcebos.com/zh/asset/theme/macarons.js",
        // dayjs
        "https://cdn.jsdelivr.net/npm/dayjs@1.10.4/dayjs.min.js",
        // amap
        // "https://webapi.amap.com/maps?v=1.4.15&key=4021966fb7dcab83d74e020647630c4b"
      ]
    }
    config.plugin('html')
      .tap(args => {
        args[0].cdn = cdn
        return args
      })
  }
}
